package com.daoqile.mpcharts;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
private LineChart lineChart;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lineChart= (LineChart) findViewById(R.id.lineChart);
        initLineChart();
    }

    private void initLineChart() {
        Description description =new Description();
        description.setText("");
        description.setTextColor(Color.RED);
        description.setTextSize(20);
        lineChart.setDescription(description);//设置图表描述信息

        Legend legend = lineChart.getLegend();
        legend.setEnabled(false);
        legend.setWordWrapEnabled(true);



        lineChart.setNoDataText("NO DATA");//没有数据时显示的文字
        lineChart.setNoDataTextColor(Color.YELLOW);//没有数据时显示文字的颜色
        lineChart.setDrawGridBackground(false);//chart 绘图区后面的背景矩形将绘制
        lineChart.setDrawBorders(false);//禁止绘制图表边框的线
        //lineChart.setBorderColor(); //设置 chart 边框线的颜色。
        //lineChart.setBorderWidth(); //设置 chart 边界线的宽度，单位 dp。
        //lineChart.setLogEnabled(true);//打印日志
        //lineChart.notifyDataSetChanged();//刷新数据
        //lineChart.invalidate();//重绘
        ArrayList<Entry> values1 = new ArrayList<>();


        values1.add(new Entry(0,273));
        values1.add(new Entry(1,273));
        values1.add(new Entry(2,272));
        values1.add(new Entry(3,273));
        values1.add(new Entry(4,272));
        values1.add(new Entry(5,273));
        values1.add(new Entry(6,272));
        values1.add(new Entry(7,273));
        values1.add(new Entry(8,273));
        values1.add(new Entry(9,272));
        values1.add(new Entry(10,273));
        values1.add(new Entry(11,272));
        values1.add(new Entry(12,273));
        values1.add(new Entry(13,272));
        values1.add(new Entry(14,272));
        values1.add(new Entry(15,273));
        values1.add(new Entry(16,272));
        values1.add(new Entry(17,273));
        values1.add(new Entry(18,273));
        values1.add(new Entry(19,272));
        values1.add(new Entry(20,273));
        values1.add(new Entry(21,272));
        values1.add(new Entry(22,273));
        values1.add(new Entry(23,272));
        values1.add(new Entry(24,273));




        //LineDataSet每一个对象就是一条连接线
        LineDataSet set1 ;


        //判断图表中原来是否有数据
        if (lineChart.getData() != null &&
                lineChart.getData().getDataSetCount() > 0) {
            //获取数据1
            set1 = (LineDataSet) lineChart.getData().getDataSetByIndex(0);
            set1.setValues(values1);

            //刷新数据
            lineChart.getData().notifyDataChanged();
            lineChart.notifyDataSetChanged();

        } else {
            //设置数据1  参数1：数据源 参数2：图例名称
            set1 = new LineDataSet(values1,"");

            set1.setDrawCircles(false);
            set1.setDrawValues(false);
            set1.setColor(Color.parseColor("#FFCD41"));
            set1.setCircleColor(Color.parseColor("#FFCD41"));
            set1.setLineWidth(1f);//设置线宽
            set1.setCircleRadius(2f);//设置焦点圆心的大小
//            set1.enableDashedHighlightLine(10f, 10f, 10f);//点击后的高亮线的显示样式

            set1.setHighlightLineWidth(1f);//设置点击交点后显示高亮线宽
            set1.setHighlightEnabled(true);//是否禁用点击高亮线
            set1.setHighLightColor(Color.parseColor("#FFCD41"));//设置点击交点后显示交高亮线的颜色
            set1.setValueTextSize(9f);//设置显示值的文字大小
            set1.setDrawFilled(false);//设置禁用范围背景填充


            //保存LineDataSet集合
            ArrayList<ILineDataSet> dataSets = new ArrayList<>();
            dataSets.add(set1); // add the datasets

            //创建LineData对象 属于LineChart折线图的数据集合
            LineData data = new LineData(dataSets);
            // 添加到图表中
            lineChart.setData(data);
            //绘制图表
            lineChart.invalidate();
            //获取此图表的x轴
            XAxis xAxis = lineChart.getXAxis();
            xAxis.setEnabled(true);//设置轴启用或禁用 如果禁用以下的设置全部不生效
            xAxis.setDrawAxisLine(false);//是否绘制轴线
            xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线
            xAxis.setDrawLabels(true);//绘制标签  指x轴上的对应数值
            xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//设置x轴的显示位置

            //xAxis.setTextSize(20f);//设置字体
            xAxis.setTextColor(Color.parseColor("#666666"));//设置字体颜色

            //设置竖线的显示样式为虚线
            //lineLength控制虚线段的长度
            //spaceLength控制线之间的空间
            //xAxis.enableGridDashedLine(10f, 10f, 0f);
//        xAxis.setAxisMinimum(0f);//设置x轴的最小值
//        xAxis.setAxisMaximum(10f);//设置最大值
            xAxis.setAvoidFirstLastClipping(true);//图表将避免第一个和最后一个标签条目被减掉在图表或屏幕的边缘
            xAxis.setLabelRotationAngle(0);//设置x轴标签的旋转角度
//        设置x轴显示标签数量  还有一个重载方法第二个参数为布尔值强制设置数量 如果启用会导致绘制点出现偏差
//        xAxis.setLabelCount(10);
//        xAxis.setTextColor(Color.BLUE);//设置轴标签的颜色
//        xAxis.setTextSize(24f);//设置轴标签的大小
//        xAxis.setGridLineWidth(10f);//设置竖线大小
//        xAxis.setGridColor(Color.RED);//设置竖线颜色
//        xAxis.setAxisLineColor(Color.GREEN);//设置x轴线颜色
//        xAxis.setAxisLineWidth(5f);//设置x轴线宽度
//        xAxis.setValueFormatter();//格式化x轴标签显示字符

            /**
             * Y轴默认显示左右两个轴线
             */
            //获取右边的轴线
            //YAxis rightAxis=lineChart.getAxisRight();

            //设置图表右边的y轴禁用
            YAxis rightAxis=lineChart.getAxisRight();
            rightAxis.setEnabled(false);
            //获取左边的轴线
            YAxis leftAxis = lineChart.getAxisLeft();
            leftAxis.setEnabled(true);
            leftAxis.setDrawAxisLine(false);  //0线

            //设置网格线为虚线效果
            //leftAxis.enableGridDashedLine(10f, 10f, 0f);

            //leftAxis.setDrawLabels(false);
            //leftAxis.setDrawGridLines(false);
            leftAxis.setDrawZeroLine(false);
            //是否绘制0所在的网格线
            leftAxis.setPosition(YAxis.YAxisLabelPosition.INSIDE_CHART);
    /*        MarkerView markerView = null;
            markerView.setChartView(lineChart);
            lineChart.setMarker(markerView);*/

            MyMarkerView mv = new MyMarkerView(this, R.layout.mymarkerview);
            mv.setChartView(lineChart);
            lineChart.setMarker(mv);
            lineChart.animateX(3000);
            lineChart.setTouchEnabled(true); // 设置是否可以触摸
            lineChart.setDragEnabled(true);// 是否可以拖拽
            lineChart.setScaleEnabled(false);// 是否可以缩放 x和y轴, 默认是true
            lineChart.setScaleXEnabled(false); //是否可以缩放 仅x轴
            lineChart.setScaleYEnabled(false); //是否可以缩放 仅y轴
            lineChart.setPinchZoom(true);  //设置x轴和y轴能否同时缩放。默认是否
            lineChart.setDoubleTapToZoomEnabled(true);//设置是否可以通过双击屏幕放大图表。默认是true
            lineChart.setHighlightPerDragEnabled(true);//能否拖拽高亮线(数据点与坐标的提示线)，默认是true
            lineChart.setDragDecelerationEnabled(true);//拖拽滚动时，手放开是否会持续滚动，默认是true（false是拖到哪是哪，true拖拽之后还会有缓冲）
            lineChart.setDragDecelerationFrictionCoef(0.99f);//与上面那个属性配合，持续滚动时的速度快慢，[0,1) 0代表立即停止。
    }
}}
